Fix ptr calculation when converting from a VA
authorJean-Yves Migeon <jym@NetBSD.org>
Fri, 29 Nov 2013 10:39:23 +0000 (11:39 +0100)
committerIan Campbell <ian.campbell@citrix.com>
Fri, 29 Nov 2013 11:07:01 +0000 (11:07 +0000)
The ptr calculation shall take the offset into the page into account
when ptr is valid.

Reported regression on NetBSD's port-xen with last known working libxen
being rev 2.9. This corrupts the kernel symbol table when the table is
not loaded on a page boundary.

Issue was tracked down by FastIce and Jeff Rizzo. See also
http://mail-index.netbsd.org/port-xen/2013/10/16/msg008088.html

Signed-off-by: Jean-Yves Migeon <jym@NetBSD.org>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
tools/libxc/xc_dom.h

index a183e62ee403511d3465f41bde0c9eced9773d2e..7099ceebdd88d5660d6f71d3372887237a6c9c9c 100644 (file)
@@ -342,7 +342,7 @@ static inline void *xc_dom_vaddr_to_ptr(struct xc_dom_image *dom,
     if ( ptr == NULL )
         return ptr;
     *safe_region_out = (safe_region_count << XC_DOM_PAGE_SHIFT(dom)) - offset;
-    return ptr;
+    return ptr + offset;
 }
 
 static inline xen_pfn_t xc_dom_p2m_host(struct xc_dom_image *dom, xen_pfn_t pfn)